<%@ page import="tech.aistar.pojo.User" %>
<%@ page import="java.util.*" %><%--
  Created by IntelliJ IDEA.
  User: admin
  Date: 2021/4/20
  Time: 8:47 上午
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>EL表达式</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

</head>
<body>
    <%
        User user = new User();
        user.setId(100);
        user.setUsername("admin");

        request.setAttribute("user",user);
    %>
    <%--    直接访问作用域中的对象--%>
    ${user}<br>

    <%--    OGNL方式 - 对象导航语言 - 反射技术 - getUsername - Method - invoke--%>
<%--    访问对象中的属性--%>
    ${user.username}<br>

    <%
        List<User> users = new ArrayList<User>();
        User u1 = new User("admin","123",1);
        User u2 = new User("tom","123",1);
        User u3 = new User("jack","123",1);

        users.add(u1);
        users.add(u2);
        users.add(u3);

        request.setAttribute("users",users);
    %>
<%--    直接访问一个集合--%>
    ${users}<br>
<%--    通过下标访问--%>
    ${users[1]}<br>

    <%
        //key是String - ${maps.["key"]} / ${maps.key}
        Map<String,Integer> maps = new HashMap<String,Integer>();
        maps.put("a",100);
        maps.put("b",200);
        maps.put("c",300);
        request.setAttribute("maps",maps);
    %>

    ${maps}<br>
<%--    根据key来获取value--%>
    ${maps["b"]}<br>
    ${maps.b}<br>

    <%
        //上古时代
        //如果遇到key是数字的 - 直接使用Long
        Map<Long,String> maps2 = new HashMap<Long,String>();
        maps2.put(1L,"aaa");
        maps2.put(2L,"bbb");
        maps2.put(3L,"ccc");
        request.setAttribute("maps2",maps2);
    %>
<%--    根据key去获取value--%>
    ${maps2[2]}<br>

<%--    EL - 接受url的请求的参数--%>
<%--    http://localhost:8888/aistar/jsp/5-el.jsp?name=uuu--%>
    ${param.name}<br>

<%--    如果在url中出现多个同名的key的时候
        场景 - 表单控件中 - checkbox控件[name是一样的]
--%>
<%--    http://localhost:8888/aistar/jsp/5-el.jsp?name=uuu&name=admin&name=james--%>

    <%
        String[] arr = request.getParameterValues("name");
        if(null!=arr && arr.length>0){
           out.println(Arrays.toString(arr));
        }
    %>
    <br>
    ${paramValues.name[1]}<br>

    <%--    EL - 可以支持运算--%>
    <%
        int i = 10;
        int j = 20;

        request.setAttribute("i",i);
        request.setAttribute("j",j);
    %>

    ${i gt j}<br>

<%--    进行判断,判断是否为空--%>
    <%
        String s = "";//1. 长度为0的字符串
        List<String> list = new ArrayList<String>();//2. 集合大小为0
    %><br>
    ${empty s}<br>
    ${empty list}<br>
<%--    3. 访问一个没有定义的变量
        4. 为null
--%>
    ${empty tt}<br>

<%--    使用EL表达式来获取请求头信息--%>
<%--    ${header.User-Agent}--%>
    <%
        out.println(request.getHeader("User-Agent"));
    %>

<%--    使用EL表达式来获取${cookie.name.value}--%>
<%--    碰到非要在jsp中获取cookie,一定是使用jsp的代码块 - 使用java代码去取cookie--%>
</body>
</html>
